package testes;

import static org.junit.Assert.*;


import java.util.HashSet;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.quasar.copaPaises.businessLayer.*;
public class EquipaTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
		 CalendarDate.allInstances.clear();
		  Campeonato.allInstances.clear();
		  Cartao.allInstances.clear();
		  Cidade.allInstances.clear();
		  Clube.allInstances.clear();
		  Continente.allInstances.clear();
		  Equipa.allInstances.clear();
		  Estadio.allInstances.clear();
		  Golo.allInstances.clear();
		  Grupo.allInstances.clear();
		  Jogador.allInstances.clear();
		  Jogo.allInstances.clear();
		  Membro.allInstances.clear();
		  Pais.allInstances.clear();
		  Participacao.allInstances.clear();
		  Participante.allInstances().clear();
		  Treinador.allInstances.clear();
	}

	@After
	public void tearDown() throws Exception {
		 CalendarDate.allInstances.clear();
		  Campeonato.allInstances.clear();
		  Cartao.allInstances.clear();
		  Cidade.allInstances.clear();
		  Clube.allInstances.clear();
		  Continente.allInstances.clear();
		  Equipa.allInstances.clear();
		  Estadio.allInstances.clear();
		  Golo.allInstances.clear();
		  Grupo.allInstances.clear();
		  Jogador.allInstances.clear();
		  Jogo.allInstances.clear();
		  Membro.allInstances.clear();
		  Pais.allInstances.clear();
		  Participacao.allInstances.clear();
		  Participante.allInstances().clear();
		  Treinador.allInstances.clear();
	}

	@Test
	public final void testEquipa() {
		Equipa equipa = new Equipa();
		assertNotNull(equipa);
	}

	@Test
	public final void testEquipaJogoPais() {
		Equipa equipa = new Equipa (new Jogo(), new Pais());
		assertNotNull(equipa);
		assertNotNull(equipa.jogo());
		assertNotNull(equipa.seleccao());
	}

	@Test
	public final void testJogo() {
		Jogo jogo = new Jogo();
		Equipa equipa = new Equipa();
		equipa.setJogo(jogo);
		assertEquals(equipa.jogo(), jogo);
	}

	@Test
	public final void testSetJogo() {
		Jogo jogo = new Jogo();
		Equipa equipa = new Equipa();
		equipa.setJogo(jogo);
		assertNotNull(equipa.jogo());
	}

	@Test
	public final void testSeleccao() {
		Equipa equipa = new Equipa();
		Pais pais = new Pais();
		equipa.setSeleccao(pais);
		assertEquals(equipa.seleccao(), pais);
	}

	@Test
	public final void testSetSeleccao() {
		Equipa equipa = new Equipa();
		Pais pais = new Pais();
		equipa.setSeleccao(pais);
		assertNotNull(equipa.seleccao());
	}

	@Test
	public final void testMembro() {
		Equipa equipa = new Equipa();
		HashSet<Membro> membros = new HashSet<Membro>();
		Membro membro1 = new Membro();
		Membro membro2 = new Membro();
		Membro membro3 = new Membro();
		membros.add(membro1);
		membros.add(membro2);
		equipa.setMembro(membros);
		assertEquals(equipa.membro(), membros);
		assertTrue(equipa.membro().size() == 2);
	}

	@Test
	public final void testSetMembro() {
		Equipa equipa = new Equipa();
		HashSet<Membro> membro = new HashSet<Membro>();
		equipa.setMembro(membro);
		assertNotNull(equipa.membro());
	}

	@Test
	public final void testJogador() {
		Equipa equipa = new Equipa();
		
		HashSet<Jogador> jogadores = new HashSet<Jogador>();
		
		Membro membro1 = new Membro();
		Membro membro2= new Membro();
		Membro membro3= new Membro();		
		
		Jogador jogador1 = new Jogador();
		Jogador jogador2 = new Jogador();
		Jogador jogador3 = new Jogador();
		
		membro1.setJogador(jogador1);
		membro2.setJogador(jogador2);
		membro3.setJogador(jogador3);
		membro1.setEquipa(equipa);
		membro2.setEquipa(equipa);
			
		//jogadores.add(jogador1);
		//jogadores.add(jogador2);
		//equipa.setJogador(jogadores);
		
		assertTrue(equipa.jogador().size() == 2);
	}

	@Test
	public final void testSetJogador() {
		Equipa equipa = new Equipa();
		HashSet<Jogador> jogador = new HashSet<Jogador>();
		equipa.setJogador(jogador);
		assertNotNull(equipa.jogador());
	}

	
	/**@Test
	 * public final void testCriaFichaJogoFalsa() {
		fail("Not yet implemented"); // TODO
	}*/

	@Test
	public final void testToString() {
		Equipa equipa = new Equipa (new Jogo(), new Pais());
		String toString = "Equipa [jogo=Jogo [dia=null, hora=null, grupo=null, estadio=null]\n" +
				", seleccao=Pais [area=0, nome=null, populacao=0, continente=null, grupo=null]\n]\n";
		assertEquals(equipa.toString(),toString);
	}

}
